package main

import (
	"encoding/json"
	"flag"
	"io/ioutil"
	"net/http"
	"github.com/prometheus/client_golang/prometheus"
	"github.com/prometheus/log"
)

//常量
const (
	namespace = "hbaseMaster"
)

//变量
var (
	listenAddress  = flag.String("web.listen-address", ":9070", "Address on which to expose metrics and web interface.")
	metricsPath    = flag.String("web.telemetry-path", "/metrics", "Path under which to expose metrics.")
	hbaseMasterJmxUrl = flag.String("hbase.jmx.url", "http://192.168.10.10:16010/jmx", "Hadoop JMX URL.")
)

//数据结构
type Exporter struct {
	url                      string
	miscInvocationCount     prometheus.Gauge
	BalancerCluster_num_ops     prometheus.Gauge
	BalancerCluster_min     prometheus.Gauge
	BalancerCluster_max     prometheus.Gauge
	BalancerCluster_mean     prometheus.Gauge
	BalancerCluster_25th_percentile     prometheus.Gauge
	BalancerCluster_median     prometheus.Gauge
	BalancerCluster_75th_percentile     prometheus.Gauge
	BalancerCluster_90th_percentile     prometheus.Gauge
	BalancerCluster_95th_percentile     prometheus.Gauge
	BalancerCluster_98th_percentile     prometheus.Gauge
	BalancerCluster_99th_percentile     prometheus.Gauge
	//BalancerCluster_99.9th_percentile     prometheus.Gauge
	ritOldestAge     prometheus.Gauge
	ritCountOverThreshold     prometheus.Gauge
	BulkAssign_num_ops     prometheus.Gauge
	BulkAssign_min     prometheus.Gauge
	BulkAssign_max     prometheus.Gauge
	BulkAssign_mean     prometheus.Gauge
	BulkAssign_25th_percentile     prometheus.Gauge
	BulkAssign_median     prometheus.Gauge
	BulkAssign_75th_percentile     prometheus.Gauge
	BulkAssign_90th_percentile     prometheus.Gauge
	BulkAssign_95th_percentile     prometheus.Gauge
	BulkAssign_98th_percentile     prometheus.Gauge
	BulkAssign_99th_percentile     prometheus.Gauge
	ritCount     prometheus.Gauge
	Assign_num_ops     prometheus.Gauge
	Assign_min     prometheus.Gauge
	Assign_max     prometheus.Gauge
	Assign_mean     prometheus.Gauge
	Assign_25th_percentile     prometheus.Gauge
	Assign_median     prometheus.Gauge
	Assign_75th_percentile     prometheus.Gauge
	Assign_90th_percentile     prometheus.Gauge
	Assign_95th_percentile     prometheus.Gauge
	Assign_98th_percentile     prometheus.Gauge
	Assign_99th_percentile     prometheus.Gauge
	Uptime     prometheus.Gauge
	StartTime     prometheus.Gauge
	PeakThreadCount     prometheus.Gauge
	DaemonThreadCount     prometheus.Gauge
	ThreadCount     prometheus.Gauge
	TotalStartedThreadCount     prometheus.Gauge
	CurrentThreadCpuTime     prometheus.Gauge
	CurrentThreadUserTime     prometheus.Gauge
	OpenFileDescriptorCount     prometheus.Gauge
	MaxFileDescriptorCount     prometheus.Gauge
	CommittedVirtualMemorySize     prometheus.Gauge
	TotalSwapSpaceSize     prometheus.Gauge
	FreeSwapSpaceSize     prometheus.Gauge
	ProcessCpuTime     prometheus.Gauge
	FreePhysicalMemorySize     prometheus.Gauge
	TotalPhysicalMemorySize     prometheus.Gauge
	SystemCpuLoad     prometheus.Gauge
	ProcessCpuLoad     prometheus.Gauge
	AvailableProcessors     prometheus.Gauge
	SystemLoadAverage     prometheus.Gauge
	NumActiveSources     prometheus.Gauge
	NumAllSources     prometheus.Gauge
	NumActiveSinks     prometheus.Gauge
	NumAllSinks     prometheus.Gauge
	SnapshotNumOps     prometheus.Gauge
	SnapshotAvgTime     prometheus.Gauge
	PublishNumOps     prometheus.Gauge
	PublishAvgTime     prometheus.Gauge
	DroppedPubAll     prometheus.Gauge
	Count     prometheus.Gauge
	TotalCompilationTime     prometheus.Gauge
	LoadedClassCount     prometheus.Gauge
	UnloadedClassCount     prometheus.Gauge
	TotalLoadedClassCount     prometheus.Gauge
	HlogSplitTime_num_ops     prometheus.Gauge
	HlogSplitTime_min     prometheus.Gauge
	HlogSplitTime_max     prometheus.Gauge
	HlogSplitTime_mean     prometheus.Gauge
	HlogSplitTime_25th_percentile     prometheus.Gauge
	HlogSplitTime_median     prometheus.Gauge
	HlogSplitTime_75th_percentile     prometheus.Gauge
	HlogSplitTime_90th_percentile     prometheus.Gauge
	HlogSplitTime_95th_percentile     prometheus.Gauge
	HlogSplitTime_98th_percentile     prometheus.Gauge
	HlogSplitTime_99th_percentile     prometheus.Gauge
	MetaHlogSplitTime_num_ops     prometheus.Gauge
	MetaHlogSplitTime_min     prometheus.Gauge
	MetaHlogSplitTime_max     prometheus.Gauge
	MetaHlogSplitTime_mean     prometheus.Gauge
	MetaHlogSplitTime_25th_percentile     prometheus.Gauge
	MetaHlogSplitTime_median     prometheus.Gauge
	MetaHlogSplitTime_75th_percentile     prometheus.Gauge
	MetaHlogSplitTime_90th_percentile     prometheus.Gauge
	MetaHlogSplitTime_95th_percentile     prometheus.Gauge
	MetaHlogSplitTime_98th_percentile     prometheus.Gauge
	MetaHlogSplitTime_99th_percentile     prometheus.Gauge
	HlogSplitSize_num_ops     prometheus.Gauge
	HlogSplitSize_min     prometheus.Gauge
	HlogSplitSize_max     prometheus.Gauge
	HlogSplitSize_mean     prometheus.Gauge
	HlogSplitSize_25th_percentile     prometheus.Gauge
	HlogSplitSize_median     prometheus.Gauge
	HlogSplitSize_75th_percentile     prometheus.Gauge
	HlogSplitSize_90th_percentile     prometheus.Gauge
	HlogSplitSize_95th_percentile     prometheus.Gauge
	HlogSplitSize_98th_percentile     prometheus.Gauge
	HlogSplitSize_99th_percentile     prometheus.Gauge
	MetaHlogSplitSize_num_ops     prometheus.Gauge
	MetaHlogSplitSize_min     prometheus.Gauge
	MetaHlogSplitSize_max     prometheus.Gauge
	MetaHlogSplitSize_mean     prometheus.Gauge
	MetaHlogSplitSize_25th_percentile     prometheus.Gauge
	MetaHlogSplitSize_median     prometheus.Gauge
	MetaHlogSplitSize_75th_percentile     prometheus.Gauge
	MetaHlogSplitSize_90th_percentile     prometheus.Gauge
	MetaHlogSplitSize_95th_percentile     prometheus.Gauge
	MetaHlogSplitSize_98th_percentile     prometheus.Gauge
	MetaHlogSplitSize_99th_percentile     prometheus.Gauge
	mergePlanCount     prometheus.Gauge
	splitPlanCount     prometheus.Gauge
	masterActiveTime     prometheus.Gauge
	masterStartTime     prometheus.Gauge
	averageLoad     prometheus.Gauge
	numRegionServers     prometheus.Gauge
	numDeadRegionServers     prometheus.Gauge
	clusterRequests     prometheus.Gauge
	isActiveMaster prometheus.Gauge
	CollectionUsageThreshold     prometheus.Gauge
	CollectionUsageThresholdCount     prometheus.Gauge
	MemNonHeapUsedM     prometheus.Gauge
	MemNonHeapCommittedM     prometheus.Gauge
	MemNonHeapMaxM     prometheus.Gauge
	MemHeapUsedM     prometheus.Gauge
	MemHeapCommittedM     prometheus.Gauge
	MemHeapMaxM     prometheus.Gauge
	MemMaxM     prometheus.Gauge
	GcCountParNew     prometheus.Gauge
	GcTimeMillisParNew     prometheus.Gauge
	GcCountConcurrentMarkSweep     prometheus.Gauge
	GcTimeMillisConcurrentMarkSweep     prometheus.Gauge
	GcCount     prometheus.Gauge
	GcTimeMillis     prometheus.Gauge
	ThreadsNew     prometheus.Gauge
	ThreadsRunnable     prometheus.Gauge
	ThreadsBlocked     prometheus.Gauge
	ThreadsWaiting     prometheus.Gauge
	ThreadsTimedWaiting     prometheus.Gauge
	ThreadsTerminated     prometheus.Gauge
	LogFatal     prometheus.Gauge
	LogError     prometheus.Gauge
	LogWarn     prometheus.Gauge
	LogInfo     prometheus.Gauge
	queueSize     prometheus.Gauge
	numCallsInGeneralQueue     prometheus.Gauge
	numCallsInReplicationQueue     prometheus.Gauge
	numCallsInPriorityQueue     prometheus.Gauge
	numOpenConnections     prometheus.Gauge
	numActiveHandler     prometheus.Gauge
	numGeneralCallsDropped     prometheus.Gauge
	numLifoModeSwitches     prometheus.Gauge
	receivedBytes     prometheus.Gauge
	authenticationSuccesses     prometheus.Gauge
	authorizationFailures     prometheus.Gauge
	TotalCallTime_num_ops     prometheus.Gauge
	TotalCallTime_min     prometheus.Gauge
	TotalCallTime_max     prometheus.Gauge
	TotalCallTime_mean     prometheus.Gauge
	TotalCallTime_25th_percentile     prometheus.Gauge
	TotalCallTime_median     prometheus.Gauge
	TotalCallTime_75th_percentile     prometheus.Gauge
	TotalCallTime_90th_percentile     prometheus.Gauge
	TotalCallTime_95th_percentile     prometheus.Gauge
	TotalCallTime_98th_percentile     prometheus.Gauge
	TotalCallTime_99th_percentile     prometheus.Gauge
	ResponseSize_num_ops     prometheus.Gauge
	ResponseSize_min     prometheus.Gauge
	ResponseSize_max     prometheus.Gauge
	ResponseSize_mean     prometheus.Gauge
	ResponseSize_25th_percentile     prometheus.Gauge
	ResponseSize_median     prometheus.Gauge
	ResponseSize_75th_percentile     prometheus.Gauge
	ResponseSize_90th_percentile     prometheus.Gauge
	ResponseSize_95th_percentile     prometheus.Gauge
	ResponseSize_98th_percentile     prometheus.Gauge
	ResponseSize_99th_percentile     prometheus.Gauge
	exceptions     prometheus.Gauge
	ProcessCallTime_num_ops     prometheus.Gauge
	ProcessCallTime_min     prometheus.Gauge
	ProcessCallTime_max     prometheus.Gauge
	ProcessCallTime_mean     prometheus.Gauge
	ProcessCallTime_25th_percentile     prometheus.Gauge
	ProcessCallTime_median     prometheus.Gauge
	ProcessCallTime_75th_percentile     prometheus.Gauge
	ProcessCallTime_90th_percentile     prometheus.Gauge
	ProcessCallTime_95th_percentile     prometheus.Gauge
	ProcessCallTime_98th_percentile     prometheus.Gauge
	ProcessCallTime_99th_percentile     prometheus.Gauge
	authenticationFallbacks     prometheus.Gauge
	authorizationSuccesses     prometheus.Gauge
	RequestSize_num_ops     prometheus.Gauge
	RequestSize_min     prometheus.Gauge
	RequestSize_max     prometheus.Gauge
	RequestSize_mean     prometheus.Gauge
	RequestSize_25th_percentile     prometheus.Gauge
	RequestSize_median     prometheus.Gauge
	RequestSize_75th_percentile     prometheus.Gauge
	RequestSize_90th_percentile     prometheus.Gauge
	RequestSize_95th_percentile     prometheus.Gauge
	RequestSize_98th_percentile     prometheus.Gauge
	RequestSize_99th_percentile     prometheus.Gauge
	sentBytes     prometheus.Gauge
	QueueCallTime_num_ops     prometheus.Gauge
	QueueCallTime_min     prometheus.Gauge
	QueueCallTime_max     prometheus.Gauge
	QueueCallTime_mean     prometheus.Gauge
	QueueCallTime_25th_percentile     prometheus.Gauge
	QueueCallTime_median     prometheus.Gauge
	QueueCallTime_75th_percentile     prometheus.Gauge
	QueueCallTime_90th_percentile     prometheus.Gauge
	QueueCallTime_95th_percentile     prometheus.Gauge
	QueueCallTime_98th_percentile     prometheus.Gauge
	QueueCallTime_99th_percentile     prometheus.Gauge
	authenticationFailures     prometheus.Gauge
	LoginSuccessNumOps     prometheus.Gauge
	LoginSuccessAvgTime     prometheus.Gauge
	LoginFailureNumOps     prometheus.Gauge
	LoginFailureAvgTime     prometheus.Gauge
	GetGroupsNumOps     prometheus.Gauge
	GetGroupsAvgTime     prometheus.Gauge
	numMasterWALs     prometheus.Gauge
}

func NewExporter(url string) *Exporter {
	return &Exporter{
		url: url,
		miscInvocationCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "miscInvocationCount",
		Help: "miscInvocationCount",
	}),
		BalancerCluster_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BalancerCluster_num_ops",
		Help: "BalancerCluster_num_ops",
	}),
		BalancerCluster_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BalancerCluster_min",
		Help: "BalancerCluster_min",
	}),
		BalancerCluster_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BalancerCluster_max",
		Help: "BalancerCluster_max",
	}),
		BalancerCluster_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BalancerCluster_mean",
		Help: "BalancerCluster_mean",
	}),
		BalancerCluster_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BalancerCluster_25th_percentile",
		Help: "BalancerCluster_25th_percentile",
	}),
		BalancerCluster_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BalancerCluster_median",
		Help: "BalancerCluster_median",
	}),
		BalancerCluster_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BalancerCluster_75th_percentile",
		Help: "BalancerCluster_75th_percentile",
	}),
		BalancerCluster_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BalancerCluster_90th_percentile",
		Help: "BalancerCluster_90th_percentile",
	}),
		BalancerCluster_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BalancerCluster_95th_percentile",
		Help: "BalancerCluster_95th_percentile",
	}),
		BalancerCluster_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BalancerCluster_98th_percentile",
		Help: "BalancerCluster_98th_percentile",
	}),
		BalancerCluster_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BalancerCluster_99th_percentile",
		Help: "BalancerCluster_99th_percentile",
	}),
		ritOldestAge: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ritOldestAge",
		Help: "ritOldestAge",
	}),
		ritCountOverThreshold: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ritCountOverThreshold",
		Help: "ritCountOverThreshold",
	}),
		BulkAssign_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BulkAssign_num_ops",
		Help: "BulkAssign_num_ops",
	}),
		BulkAssign_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BulkAssign_min",
		Help: "BulkAssign_min",
	}),
		BulkAssign_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BulkAssign_max",
		Help: "BulkAssign_max",
	}),
		BulkAssign_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BulkAssign_mean",
		Help: "BulkAssign_mean",
	}),
		BulkAssign_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BulkAssign_25th_percentile",
		Help: "BulkAssign_25th_percentile",
	}),
		BulkAssign_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BulkAssign_median",
		Help: "BulkAssign_median",
	}),
		BulkAssign_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BulkAssign_75th_percentile",
		Help: "BulkAssign_75th_percentile",
	}),
		BulkAssign_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BulkAssign_90th_percentile",
		Help: "BulkAssign_90th_percentile",
	}),
		BulkAssign_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BulkAssign_95th_percentile",
		Help: "BulkAssign_95th_percentile",
	}),
		BulkAssign_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BulkAssign_98th_percentile",
		Help: "BulkAssign_98th_percentile",
	}),
		BulkAssign_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "BulkAssign_99th_percentile",
		Help: "BulkAssign_99th_percentile",
	}),
		ritCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ritCount",
		Help: "ritCount",
	}),
		Assign_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Assign_num_ops",
		Help: "Assign_num_ops",
	}),
		Assign_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Assign_min",
		Help: "Assign_min",
	}),
		Assign_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Assign_max",
		Help: "Assign_max",
	}),
		Assign_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Assign_mean",
		Help: "Assign_mean",
	}),
		Assign_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Assign_25th_percentile",
		Help: "Assign_25th_percentile",
	}),
		Assign_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Assign_median",
		Help: "Assign_median",
	}),
		Assign_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Assign_75th_percentile",
		Help: "Assign_75th_percentile",
	}),
		Assign_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Assign_90th_percentile",
		Help: "Assign_90th_percentile",
	}),
		Assign_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Assign_95th_percentile",
		Help: "Assign_95th_percentile",
	}),
		Assign_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Assign_98th_percentile",
		Help: "Assign_98th_percentile",
	}),
		Assign_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Assign_99th_percentile",
		Help: "Assign_99th_percentile",
	}),
		Uptime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "Uptime",
		Help: "Uptime",
	}),
		StartTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "StartTime",
		Help: "StartTime",
	}),
		PeakThreadCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "PeakThreadCount",
		Help: "PeakThreadCount",
	}),
		DaemonThreadCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "DaemonThreadCount",
		Help: "DaemonThreadCount",
	}),
		ThreadCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ThreadCount",
		Help: "ThreadCount",
	}),
		TotalStartedThreadCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalStartedThreadCount",
		Help: "TotalStartedThreadCount",
	}),
		CurrentThreadCpuTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "CurrentThreadCpuTime",
		Help: "CurrentThreadCpuTime",
	}),
		CurrentThreadUserTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "CurrentThreadUserTime",
		Help: "CurrentThreadUserTime",
	}),
		OpenFileDescriptorCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "OpenFileDescriptorCount",
		Help: "OpenFileDescriptorCount",
	}),
		MaxFileDescriptorCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MaxFileDescriptorCount",
		Help: "MaxFileDescriptorCount",
	}),
		CommittedVirtualMemorySize: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "CommittedVirtualMemorySize",
		Help: "CommittedVirtualMemorySize",
	}),
		TotalSwapSpaceSize: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalSwapSpaceSize",
		Help: "TotalSwapSpaceSize",
	}),
		FreeSwapSpaceSize: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "FreeSwapSpaceSize",
		Help: "FreeSwapSpaceSize",
	}),
		ProcessCpuTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCpuTime",
		Help: "ProcessCpuTime",
	}),
		FreePhysicalMemorySize: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "FreePhysicalMemorySize",
		Help: "FreePhysicalMemorySize",
	}),
		TotalPhysicalMemorySize: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalPhysicalMemorySize",
		Help: "TotalPhysicalMemorySize",
	}),
		SystemCpuLoad: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "SystemCpuLoad",
		Help: "SystemCpuLoad",
	}),
		ProcessCpuLoad: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCpuLoad",
		Help: "ProcessCpuLoad",
	}),
		AvailableProcessors: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "AvailableProcessors",
		Help: "AvailableProcessors",
	}),
		SystemLoadAverage: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "SystemLoadAverage",
		Help: "SystemLoadAverage",
	}),
		NumActiveSources: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "NumActiveSources",
		Help: "NumActiveSources",
	}),
		NumAllSources: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "NumAllSources",
		Help: "NumAllSources",
	}),
		NumActiveSinks: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "NumActiveSinks",
		Help: "NumActiveSinks",
	}),
		NumAllSinks: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "NumAllSinks",
		Help: "NumAllSinks",
	}),
		SnapshotNumOps: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "SnapshotNumOps",
		Help: "SnapshotNumOps",
	}),
		SnapshotAvgTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "SnapshotAvgTime",
		Help: "SnapshotAvgTime",
	}),
		PublishNumOps: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "PublishNumOps",
		Help: "PublishNumOps",
	}),
		PublishAvgTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "PublishAvgTime",
		Help: "PublishAvgTime",
	}),
		DroppedPubAll: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "DroppedPubAll",
		Help: "DroppedPubAll",
	}),
		TotalCompilationTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCompilationTime",
		Help: "TotalCompilationTime",
	}),
		LoadedClassCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "LoadedClassCount",
		Help: "LoadedClassCount",
	}),
		UnloadedClassCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "UnloadedClassCount",
		Help: "UnloadedClassCount",
	}),
		TotalLoadedClassCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalLoadedClassCount",
		Help: "TotalLoadedClassCount",
	}),
		HlogSplitTime_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitTime_num_ops",
		Help: "HlogSplitTime_num_ops",
	}),
		HlogSplitTime_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitTime_min",
		Help: "HlogSplitTime_min",
	}),
		HlogSplitTime_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitTime_max",
		Help: "HlogSplitTime_max",
	}),
		HlogSplitTime_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitTime_mean",
		Help: "HlogSplitTime_mean",
	}),
		HlogSplitTime_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitTime_25th_percentile",
		Help: "HlogSplitTime_25th_percentile",
	}),
		HlogSplitTime_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitTime_median",
		Help: "HlogSplitTime_median",
	}),
		HlogSplitTime_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitTime_75th_percentile",
		Help: "HlogSplitTime_75th_percentile",
	}),
		HlogSplitTime_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitTime_90th_percentile",
		Help: "HlogSplitTime_90th_percentile",
	}),
		HlogSplitTime_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitTime_95th_percentile",
		Help: "HlogSplitTime_95th_percentile",
	}),
		HlogSplitTime_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitTime_98th_percentile",
		Help: "HlogSplitTime_98th_percentile",
	}),
		HlogSplitTime_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitTime_99th_percentile",
		Help: "HlogSplitTime_99th_percentile",
	}),
		MetaHlogSplitTime_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitTime_num_ops",
		Help: "MetaHlogSplitTime_num_ops",
	}),
		MetaHlogSplitTime_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitTime_min",
		Help: "MetaHlogSplitTime_min",
	}),
		MetaHlogSplitTime_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitTime_max",
		Help: "MetaHlogSplitTime_max",
	}),
		MetaHlogSplitTime_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitTime_mean",
		Help: "MetaHlogSplitTime_mean",
	}),
		MetaHlogSplitTime_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitTime_25th_percentile",
		Help: "MetaHlogSplitTime_25th_percentile",
	}),
		MetaHlogSplitTime_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitTime_median",
		Help: "MetaHlogSplitTime_median",
	}),
		MetaHlogSplitTime_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitTime_75th_percentile",
		Help: "MetaHlogSplitTime_75th_percentile",
	}),
		MetaHlogSplitTime_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitTime_90th_percentile",
		Help: "MetaHlogSplitTime_90th_percentile",
	}),
		MetaHlogSplitTime_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitTime_95th_percentile",
		Help: "MetaHlogSplitTime_95th_percentile",
	}),
		MetaHlogSplitTime_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitTime_98th_percentile",
		Help: "MetaHlogSplitTime_98th_percentile",
	}),
		MetaHlogSplitTime_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitTime_99th_percentile",
		Help: "MetaHlogSplitTime_99th_percentile",
	}),
		HlogSplitSize_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitSize_num_ops",
		Help: "HlogSplitSize_num_ops",
	}),
		HlogSplitSize_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitSize_min",
		Help: "HlogSplitSize_min",
	}),
		HlogSplitSize_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitSize_max",
		Help: "HlogSplitSize_max",
	}),
		HlogSplitSize_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitSize_mean",
		Help: "HlogSplitSize_mean",
	}),
		HlogSplitSize_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitSize_25th_percentile",
		Help: "HlogSplitSize_25th_percentile",
	}),
		HlogSplitSize_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitSize_median",
		Help: "HlogSplitSize_median",
	}),
		HlogSplitSize_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitSize_75th_percentile",
		Help: "HlogSplitSize_75th_percentile",
	}),
		HlogSplitSize_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitSize_90th_percentile",
		Help: "HlogSplitSize_90th_percentile",
	}),
		HlogSplitSize_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitSize_95th_percentile",
		Help: "HlogSplitSize_95th_percentile",
	}),
		HlogSplitSize_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitSize_98th_percentile",
		Help: "HlogSplitSize_98th_percentile",
	}),
		HlogSplitSize_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "HlogSplitSize_99th_percentile",
		Help: "HlogSplitSize_99th_percentile",
	}),
		MetaHlogSplitSize_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitSize_num_ops",
		Help: "MetaHlogSplitSize_num_ops",
	}),
		MetaHlogSplitSize_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitSize_min",
		Help: "MetaHlogSplitSize_min",
	}),
		MetaHlogSplitSize_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitSize_max",
		Help: "MetaHlogSplitSize_max",
	}),
		MetaHlogSplitSize_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitSize_mean",
		Help: "MetaHlogSplitSize_mean",
	}),
		MetaHlogSplitSize_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitSize_25th_percentile",
		Help: "MetaHlogSplitSize_25th_percentile",
	}),
		MetaHlogSplitSize_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitSize_median",
		Help: "MetaHlogSplitSize_median",
	}),
		MetaHlogSplitSize_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitSize_75th_percentile",
		Help: "MetaHlogSplitSize_75th_percentile",
	}),
		MetaHlogSplitSize_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitSize_90th_percentile",
		Help: "MetaHlogSplitSize_90th_percentile",
	}),
		MetaHlogSplitSize_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitSize_95th_percentile",
		Help: "MetaHlogSplitSize_95th_percentile",
	}),
		MetaHlogSplitSize_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitSize_98th_percentile",
		Help: "MetaHlogSplitSize_98th_percentile",
	}),
		MetaHlogSplitSize_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MetaHlogSplitSize_99th_percentile",
		Help: "MetaHlogSplitSize_99th_percentile",
	}),
		mergePlanCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "mergePlanCount",
		Help: "mergePlanCount",
	}),
		splitPlanCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "splitPlanCount",
		Help: "splitPlanCount",
	}),
		masterActiveTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "masterActiveTime",
		Help: "masterActiveTime",
	}),
		masterStartTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "masterStartTime",
		Help: "masterStartTime",
	}),
		averageLoad: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "averageLoad",
		Help: "averageLoad",
	}),
		numRegionServers: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "numRegionServers",
		Help: "numRegionServers",
	}),
		numDeadRegionServers: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "numDeadRegionServers",
		Help: "numDeadRegionServers",
	}),
		clusterRequests: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "clusterRequests",
		Help: "clusterRequests",
	}),
		isActiveMaster: prometheus.NewGauge(prometheus.GaugeOpts{
			Namespace: namespace,
			Name: "isActiveMaster",
			Help: "isActiveMaster",
		}),
		MemNonHeapUsedM: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MemNonHeapUsedM",
		Help: "MemNonHeapUsedM",
	}),
		MemNonHeapCommittedM: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MemNonHeapCommittedM",
		Help: "MemNonHeapCommittedM",
	}),
		MemNonHeapMaxM: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MemNonHeapMaxM",
		Help: "MemNonHeapMaxM",
	}),
		MemHeapUsedM: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MemHeapUsedM",
		Help: "MemHeapUsedM",
	}),
		MemHeapCommittedM: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MemHeapCommittedM",
		Help: "MemHeapCommittedM",
	}),
		MemHeapMaxM: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MemHeapMaxM",
		Help: "MemHeapMaxM",
	}),
		MemMaxM: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "MemMaxM",
		Help: "MemMaxM",
	}),
		GcCountParNew: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "GcCountParNew",
		Help: "GcCountParNew",
	}),
		GcTimeMillisParNew: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "GcTimeMillisParNew",
		Help: "GcTimeMillisParNew",
	}),
		GcCountConcurrentMarkSweep: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "GcCountConcurrentMarkSweep",
		Help: "GcCountConcurrentMarkSweep",
	}),
		GcTimeMillisConcurrentMarkSweep: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "GcTimeMillisConcurrentMarkSweep",
		Help: "GcTimeMillisConcurrentMarkSweep",
	}),
		GcCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "GcCount",
		Help: "GcCount",
	}),
		GcTimeMillis: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "GcTimeMillis",
		Help: "GcTimeMillis",
	}),
		ThreadsNew: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ThreadsNew",
		Help: "ThreadsNew",
	}),
		ThreadsRunnable: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ThreadsRunnable",
		Help: "ThreadsRunnable",
	}),
		ThreadsBlocked: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ThreadsBlocked",
		Help: "ThreadsBlocked",
	}),
		ThreadsWaiting: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ThreadsWaiting",
		Help: "ThreadsWaiting",
	}),
		ThreadsTimedWaiting: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ThreadsTimedWaiting",
		Help: "ThreadsTimedWaiting",
	}),
		ThreadsTerminated: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ThreadsTerminated",
		Help: "ThreadsTerminated",
	}),
		LogFatal: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "LogFatal",
		Help: "LogFatal",
	}),
		LogError: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "LogError",
		Help: "LogError",
	}),
		LogWarn: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "LogWarn",
		Help: "LogWarn",
	}),
		LogInfo: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "LogInfo",
		Help: "LogInfo",
	}),
		CollectionUsageThreshold: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "CollectionUsageThreshold",
		Help: "CollectionUsageThreshold",
	}),
		CollectionUsageThresholdCount: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "CollectionUsageThresholdCount",
		Help: "CollectionUsageThresholdCount",
	}),
		queueSize: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "queueSize",
		Help: "queueSize",
	}),
		numCallsInGeneralQueue: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "numCallsInGeneralQueue",
		Help: "numCallsInGeneralQueue",
	}),
		numCallsInReplicationQueue: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "numCallsInReplicationQueue",
		Help: "numCallsInReplicationQueue",
	}),
		numCallsInPriorityQueue: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "numCallsInPriorityQueue",
		Help: "numCallsInPriorityQueue",
	}),
		numOpenConnections: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "numOpenConnections",
		Help: "numOpenConnections",
	}),
		numActiveHandler: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "numActiveHandler",
		Help: "numActiveHandler",
	}),
		numGeneralCallsDropped: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "numGeneralCallsDropped",
		Help: "numGeneralCallsDropped",
	}),
		numLifoModeSwitches: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "numLifoModeSwitches",
		Help: "numLifoModeSwitches",
	}),
		receivedBytes: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "receivedBytes",
		Help: "receivedBytes",
	}),
		authenticationSuccesses: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "authenticationSuccesses",
		Help: "authenticationSuccesses",
	}),
		authorizationFailures: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "authorizationFailures",
		Help: "authorizationFailures",
	}),
		TotalCallTime_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCallTime_num_ops",
		Help: "TotalCallTime_num_ops",
	}),
		TotalCallTime_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCallTime_min",
		Help: "TotalCallTime_min",
	}),
		TotalCallTime_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCallTime_max",
		Help: "TotalCallTime_max",
	}),
		TotalCallTime_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCallTime_mean",
		Help: "TotalCallTime_mean",
	}),
		TotalCallTime_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCallTime_25th_percentile",
		Help: "TotalCallTime_25th_percentile",
	}),
		TotalCallTime_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCallTime_median",
		Help: "TotalCallTime_median",
	}),
		TotalCallTime_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCallTime_75th_percentile",
		Help: "TotalCallTime_75th_percentile",
	}),
		TotalCallTime_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCallTime_90th_percentile",
		Help: "TotalCallTime_90th_percentile",
	}),
		TotalCallTime_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCallTime_95th_percentile",
		Help: "TotalCallTime_95th_percentile",
	}),
		TotalCallTime_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCallTime_98th_percentile",
		Help: "TotalCallTime_98th_percentile",
	}),
		TotalCallTime_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "TotalCallTime_99th_percentile",
		Help: "TotalCallTime_99th_percentile",
	}),
		ResponseSize_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ResponseSize_num_ops",
		Help: "ResponseSize_num_ops",
	}),
		ResponseSize_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ResponseSize_min",
		Help: "ResponseSize_min",
	}),
		ResponseSize_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ResponseSize_max",
		Help: "ResponseSize_max",
	}),
		ResponseSize_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ResponseSize_mean",
		Help: "ResponseSize_mean",
	}),
		ResponseSize_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ResponseSize_25th_percentile",
		Help: "ResponseSize_25th_percentile",
	}),
		ResponseSize_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ResponseSize_median",
		Help: "ResponseSize_median",
	}),
		ResponseSize_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ResponseSize_75th_percentile",
		Help: "ResponseSize_75th_percentile",
	}),
		ResponseSize_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ResponseSize_90th_percentile",
		Help: "ResponseSize_90th_percentile",
	}),
		ResponseSize_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ResponseSize_95th_percentile",
		Help: "ResponseSize_95th_percentile",
	}),
		ResponseSize_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ResponseSize_98th_percentile",
		Help: "ResponseSize_98th_percentile",
	}),
		ResponseSize_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ResponseSize_99th_percentile",
		Help: "ResponseSize_99th_percentile",
	}),
		exceptions: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "exceptions",
		Help: "exceptions",
	}),
		ProcessCallTime_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCallTime_num_ops",
		Help: "ProcessCallTime_num_ops",
	}),
		ProcessCallTime_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCallTime_min",
		Help: "ProcessCallTime_min",
	}),
		ProcessCallTime_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCallTime_max",
		Help: "ProcessCallTime_max",
	}),
		ProcessCallTime_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCallTime_mean",
		Help: "ProcessCallTime_mean",
	}),
		ProcessCallTime_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCallTime_25th_percentile",
		Help: "ProcessCallTime_25th_percentile",
	}),
		ProcessCallTime_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCallTime_median",
		Help: "ProcessCallTime_median",
	}),
		ProcessCallTime_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCallTime_75th_percentile",
		Help: "ProcessCallTime_75th_percentile",
	}),
		ProcessCallTime_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCallTime_90th_percentile",
		Help: "ProcessCallTime_90th_percentile",
	}),
		ProcessCallTime_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCallTime_95th_percentile",
		Help: "ProcessCallTime_95th_percentile",
	}),
		ProcessCallTime_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCallTime_98th_percentile",
		Help: "ProcessCallTime_98th_percentile",
	}),
		ProcessCallTime_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "ProcessCallTime_99th_percentile",
		Help: "ProcessCallTime_99th_percentile",
	}),
		authenticationFallbacks: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "authenticationFallbacks",
		Help: "authenticationFallbacks",
	}),
		authorizationSuccesses: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "authorizationSuccesses",
		Help: "authorizationSuccesses",
	}),
		RequestSize_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "RequestSize_num_ops",
		Help: "RequestSize_num_ops",
	}),
		RequestSize_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "RequestSize_min",
		Help: "RequestSize_min",
	}),
		RequestSize_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "RequestSize_max",
		Help: "RequestSize_max",
	}),
		RequestSize_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "RequestSize_mean",
		Help: "RequestSize_mean",
	}),
		RequestSize_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "RequestSize_25th_percentile",
		Help: "RequestSize_25th_percentile",
	}),
		RequestSize_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "RequestSize_median",
		Help: "RequestSize_median",
	}),
		RequestSize_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "RequestSize_75th_percentile",
		Help: "RequestSize_75th_percentile",
	}),
		RequestSize_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "RequestSize_90th_percentile",
		Help: "RequestSize_90th_percentile",
	}),
		RequestSize_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "RequestSize_95th_percentile",
		Help: "RequestSize_95th_percentile",
	}),
		RequestSize_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "RequestSize_98th_percentile",
		Help: "RequestSize_98th_percentile",
	}),
		RequestSize_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "RequestSize_99th_percentile",
		Help: "RequestSize_99th_percentile",
	}),
		sentBytes: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "sentBytes",
		Help: "sentBytes",
	}),
		QueueCallTime_num_ops: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "QueueCallTime_num_ops",
		Help: "QueueCallTime_num_ops",
	}),
		QueueCallTime_min: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "QueueCallTime_min",
		Help: "QueueCallTime_min",
	}),
		QueueCallTime_max: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "QueueCallTime_max",
		Help: "QueueCallTime_max",
	}),
		QueueCallTime_mean: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "QueueCallTime_mean",
		Help: "QueueCallTime_mean",
	}),
		QueueCallTime_25th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "QueueCallTime_25th_percentile",
		Help: "QueueCallTime_25th_percentile",
	}),
		QueueCallTime_median: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "QueueCallTime_median",
		Help: "QueueCallTime_median",
	}),
		QueueCallTime_75th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "QueueCallTime_75th_percentile",
		Help: "QueueCallTime_75th_percentile",
	}),
		QueueCallTime_90th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "QueueCallTime_90th_percentile",
		Help: "QueueCallTime_90th_percentile",
	}),
		QueueCallTime_95th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "QueueCallTime_95th_percentile",
		Help: "QueueCallTime_95th_percentile",
	}),
		QueueCallTime_98th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "QueueCallTime_98th_percentile",
		Help: "QueueCallTime_98th_percentile",
	}),
		QueueCallTime_99th_percentile: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "QueueCallTime_99th_percentile",
		Help: "QueueCallTime_99th_percentile",
	}),
		authenticationFailures: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "authenticationFailures",
		Help: "authenticationFailures",
	}),
		LoginSuccessNumOps: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "LoginSuccessNumOps",
		Help: "LoginSuccessNumOps",
	}),
		LoginSuccessAvgTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "LoginSuccessAvgTime",
		Help: "LoginSuccessAvgTime",
	}),
		LoginFailureNumOps: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "LoginFailureNumOps",
		Help: "LoginFailureNumOps",
	}),
		LoginFailureAvgTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "LoginFailureAvgTime",
		Help: "LoginFailureAvgTime",
	}),
		GetGroupsNumOps: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "GetGroupsNumOps",
		Help: "GetGroupsNumOps",
	}),
		GetGroupsAvgTime: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "GetGroupsAvgTime",
		Help: "GetGroupsAvgTime",
	}),
		numMasterWALs: prometheus.NewGauge(prometheus.GaugeOpts{
        	Namespace: namespace,
		Name: "numMasterWALs",
		Help: "numMasterWALs",
	}),
	}
}

// Describe implements the prometheus.Collector interface.
func (e *Exporter) Describe(ch chan<- *prometheus.Desc) {
	e.miscInvocationCount.Describe(ch)
	e.BalancerCluster_num_ops.Describe(ch)
	e.BalancerCluster_min.Describe(ch)
	e.BalancerCluster_max.Describe(ch)
	e.BalancerCluster_mean.Describe(ch)
	e.BalancerCluster_25th_percentile.Describe(ch)
	e.BalancerCluster_median.Describe(ch)
	e.BalancerCluster_75th_percentile.Describe(ch)
	e.BalancerCluster_90th_percentile.Describe(ch)
	e.BalancerCluster_95th_percentile.Describe(ch)
	e.BalancerCluster_98th_percentile.Describe(ch)
	e.BalancerCluster_99th_percentile.Describe(ch)
	//e.BalancerCluster_99.9th_percentile.Describe(ch)
	e.ritOldestAge.Describe(ch)
	e.ritCountOverThreshold.Describe(ch)
	e.BulkAssign_num_ops.Describe(ch)
	e.BulkAssign_min.Describe(ch)
	e.BulkAssign_max.Describe(ch)
	e.BulkAssign_mean.Describe(ch)
	e.BulkAssign_25th_percentile.Describe(ch)
	e.BulkAssign_median.Describe(ch)
	e.BulkAssign_75th_percentile.Describe(ch)
	e.BulkAssign_90th_percentile.Describe(ch)
	e.BulkAssign_95th_percentile.Describe(ch)
	e.BulkAssign_98th_percentile.Describe(ch)
	e.BulkAssign_99th_percentile.Describe(ch)
	/*
	e.BulkAssign_99.9th_percentile.Describe(ch)
	e.BulkAssign_TimeRangeCount_0-1.Describe(ch)
	e.BulkAssign_TimeRangeCount_1000-3000.Describe(ch)
	 */
	e.ritCount.Describe(ch)
	e.Assign_num_ops.Describe(ch)
	e.Assign_min.Describe(ch)
	e.Assign_max.Describe(ch)
	e.Assign_mean.Describe(ch)
	e.Assign_25th_percentile.Describe(ch)
	e.Assign_median.Describe(ch)
	e.Assign_75th_percentile.Describe(ch)
	e.Assign_90th_percentile.Describe(ch)
	e.Assign_95th_percentile.Describe(ch)
	e.Assign_98th_percentile.Describe(ch)
	e.Assign_99th_percentile.Describe(ch)
	//e.Assign_99.9th_percentile.Describe(ch)
	e.Uptime.Describe(ch)
	e.StartTime.Describe(ch)
	e.PeakThreadCount.Describe(ch)
	e.DaemonThreadCount.Describe(ch)
	e.ThreadCount.Describe(ch)
	e.TotalStartedThreadCount.Describe(ch)
	e.CurrentThreadCpuTime.Describe(ch)
	e.CurrentThreadUserTime.Describe(ch)
	e.OpenFileDescriptorCount.Describe(ch)
	e.MaxFileDescriptorCount.Describe(ch)
	e.CommittedVirtualMemorySize.Describe(ch)
	e.TotalSwapSpaceSize.Describe(ch)
	e.FreeSwapSpaceSize.Describe(ch)
	e.ProcessCpuTime.Describe(ch)
	e.FreePhysicalMemorySize.Describe(ch)
	e.TotalPhysicalMemorySize.Describe(ch)
	e.SystemCpuLoad.Describe(ch)
	e.ProcessCpuLoad.Describe(ch)
	e.AvailableProcessors.Describe(ch)
	e.SystemLoadAverage.Describe(ch)
	e.NumActiveSources.Describe(ch)
	e.NumAllSources.Describe(ch)
	e.NumActiveSinks.Describe(ch)
	e.NumAllSinks.Describe(ch)
	e.SnapshotNumOps.Describe(ch)
	e.SnapshotAvgTime.Describe(ch)
	e.PublishNumOps.Describe(ch)
	e.PublishAvgTime.Describe(ch)
	e.DroppedPubAll.Describe(ch)
	e.TotalCompilationTime.Describe(ch)
	e.LoadedClassCount.Describe(ch)
	e.UnloadedClassCount.Describe(ch)
	e.TotalLoadedClassCount.Describe(ch)
	e.HlogSplitTime_num_ops.Describe(ch)
	e.HlogSplitTime_min.Describe(ch)
	e.HlogSplitTime_max.Describe(ch)
	e.HlogSplitTime_mean.Describe(ch)
	e.HlogSplitTime_25th_percentile.Describe(ch)
	e.HlogSplitTime_median.Describe(ch)
	e.HlogSplitTime_75th_percentile.Describe(ch)
	e.HlogSplitTime_90th_percentile.Describe(ch)
	e.HlogSplitTime_95th_percentile.Describe(ch)
	e.HlogSplitTime_98th_percentile.Describe(ch)
	e.HlogSplitTime_99th_percentile.Describe(ch)
	e.MetaHlogSplitTime_num_ops.Describe(ch)
	e.MetaHlogSplitTime_min.Describe(ch)
	e.MetaHlogSplitTime_max.Describe(ch)
	e.MetaHlogSplitTime_mean.Describe(ch)
	e.MetaHlogSplitTime_25th_percentile.Describe(ch)
	e.MetaHlogSplitTime_median.Describe(ch)
	e.MetaHlogSplitTime_75th_percentile.Describe(ch)
	e.MetaHlogSplitTime_90th_percentile.Describe(ch)
	e.MetaHlogSplitTime_95th_percentile.Describe(ch)
	e.MetaHlogSplitTime_98th_percentile.Describe(ch)
	e.MetaHlogSplitTime_99th_percentile.Describe(ch)
	e.HlogSplitSize_num_ops.Describe(ch)
	e.HlogSplitSize_min.Describe(ch)
	e.HlogSplitSize_max.Describe(ch)
	e.HlogSplitSize_mean.Describe(ch)
	e.HlogSplitSize_25th_percentile.Describe(ch)
	e.HlogSplitSize_median.Describe(ch)
	e.HlogSplitSize_75th_percentile.Describe(ch)
	e.HlogSplitSize_90th_percentile.Describe(ch)
	e.HlogSplitSize_95th_percentile.Describe(ch)
	e.HlogSplitSize_98th_percentile.Describe(ch)
	e.HlogSplitSize_99th_percentile.Describe(ch)
	e.MetaHlogSplitSize_num_ops.Describe(ch)
	e.MetaHlogSplitSize_min.Describe(ch)
	e.MetaHlogSplitSize_max.Describe(ch)
	e.MetaHlogSplitSize_mean.Describe(ch)
	e.MetaHlogSplitSize_25th_percentile.Describe(ch)
	e.MetaHlogSplitSize_median.Describe(ch)
	e.MetaHlogSplitSize_75th_percentile.Describe(ch)
	e.MetaHlogSplitSize_90th_percentile.Describe(ch)
	e.MetaHlogSplitSize_95th_percentile.Describe(ch)
	e.MetaHlogSplitSize_98th_percentile.Describe(ch)
	e.MetaHlogSplitSize_99th_percentile.Describe(ch)
	e.mergePlanCount.Describe(ch)
	e.splitPlanCount.Describe(ch)
	e.masterActiveTime.Describe(ch)
	e.masterStartTime.Describe(ch)
	e.averageLoad.Describe(ch)
	e.numRegionServers.Describe(ch)
	e.numDeadRegionServers.Describe(ch)
	e.clusterRequests.Describe(ch)
	e.isActiveMaster.Describe(ch)
	e.CollectionUsageThreshold.Describe(ch)
	e.CollectionUsageThresholdCount.Describe(ch)
	e.MemNonHeapUsedM.Describe(ch)
	e.MemNonHeapCommittedM.Describe(ch)
	e.MemNonHeapMaxM.Describe(ch)
	e.MemHeapUsedM.Describe(ch)
	e.MemHeapCommittedM.Describe(ch)
	e.MemHeapMaxM.Describe(ch)
	e.MemMaxM.Describe(ch)
	e.GcCountParNew.Describe(ch)
	e.GcTimeMillisParNew.Describe(ch)
	e.GcCountConcurrentMarkSweep.Describe(ch)
	e.GcTimeMillisConcurrentMarkSweep.Describe(ch)
	e.GcCount.Describe(ch)
	e.GcTimeMillis.Describe(ch)
	e.ThreadsNew.Describe(ch)
	e.ThreadsRunnable.Describe(ch)
	e.ThreadsBlocked.Describe(ch)
	e.ThreadsWaiting.Describe(ch)
	e.ThreadsTimedWaiting.Describe(ch)
	e.ThreadsTerminated.Describe(ch)
	e.LogFatal.Describe(ch)
	e.LogError.Describe(ch)
	e.LogWarn.Describe(ch)
	e.LogInfo.Describe(ch)
	e.queueSize.Describe(ch)
	e.numCallsInGeneralQueue.Describe(ch)
	e.numCallsInReplicationQueue.Describe(ch)
	e.numCallsInPriorityQueue.Describe(ch)
	e.numOpenConnections.Describe(ch)
	e.numActiveHandler.Describe(ch)
	e.numGeneralCallsDropped.Describe(ch)
	e.numLifoModeSwitches.Describe(ch)
	e.receivedBytes.Describe(ch)
	e.authenticationSuccesses.Describe(ch)
	e.authorizationFailures.Describe(ch)
	e.TotalCallTime_num_ops.Describe(ch)
	e.TotalCallTime_min.Describe(ch)
	e.TotalCallTime_max.Describe(ch)
	e.TotalCallTime_mean.Describe(ch)
	e.TotalCallTime_25th_percentile.Describe(ch)
	e.TotalCallTime_median.Describe(ch)
	e.TotalCallTime_75th_percentile.Describe(ch)
	e.TotalCallTime_90th_percentile.Describe(ch)
	e.TotalCallTime_95th_percentile.Describe(ch)
	e.TotalCallTime_98th_percentile.Describe(ch)
	e.TotalCallTime_99th_percentile.Describe(ch)
	e.ResponseSize_num_ops.Describe(ch)
	e.ResponseSize_min.Describe(ch)
	e.ResponseSize_max.Describe(ch)
	e.ResponseSize_mean.Describe(ch)
	e.ResponseSize_25th_percentile.Describe(ch)
	e.ResponseSize_median.Describe(ch)
	e.ResponseSize_75th_percentile.Describe(ch)
	e.ResponseSize_90th_percentile.Describe(ch)
	e.ResponseSize_95th_percentile.Describe(ch)
	e.ResponseSize_98th_percentile.Describe(ch)
	e.ResponseSize_99th_percentile.Describe(ch)
	e.exceptions.Describe(ch)
	e.ProcessCallTime_num_ops.Describe(ch)
	e.ProcessCallTime_min.Describe(ch)
	e.ProcessCallTime_max.Describe(ch)
	e.ProcessCallTime_mean.Describe(ch)
	e.ProcessCallTime_25th_percentile.Describe(ch)
	e.ProcessCallTime_median.Describe(ch)
	e.ProcessCallTime_75th_percentile.Describe(ch)
	e.ProcessCallTime_90th_percentile.Describe(ch)
	e.ProcessCallTime_95th_percentile.Describe(ch)
	e.ProcessCallTime_98th_percentile.Describe(ch)
	e.ProcessCallTime_99th_percentile.Describe(ch)
	e.authenticationFallbacks.Describe(ch)
	e.authorizationSuccesses.Describe(ch)
	//e.exceptions.ScannerResetException.Describe(ch)
	e.RequestSize_num_ops.Describe(ch)
	e.RequestSize_min.Describe(ch)
	e.RequestSize_max.Describe(ch)
	e.RequestSize_mean.Describe(ch)
	e.RequestSize_25th_percentile.Describe(ch)
	e.RequestSize_median.Describe(ch)
	e.RequestSize_75th_percentile.Describe(ch)
	e.RequestSize_90th_percentile.Describe(ch)
	e.RequestSize_95th_percentile.Describe(ch)
	e.RequestSize_98th_percentile.Describe(ch)
	e.RequestSize_99th_percentile.Describe(ch)
	e.sentBytes.Describe(ch)
	e.QueueCallTime_num_ops.Describe(ch)
	e.QueueCallTime_min.Describe(ch)
	e.QueueCallTime_max.Describe(ch)
	e.QueueCallTime_mean.Describe(ch)
	e.QueueCallTime_25th_percentile.Describe(ch)
	e.QueueCallTime_median.Describe(ch)
	e.QueueCallTime_75th_percentile.Describe(ch)
	e.QueueCallTime_90th_percentile.Describe(ch)
	e.QueueCallTime_95th_percentile.Describe(ch)
	e.QueueCallTime_98th_percentile.Describe(ch)
	e.QueueCallTime_99th_percentile.Describe(ch)
	e.authenticationFailures.Describe(ch)
	e.LoginSuccessNumOps.Describe(ch)
	e.LoginSuccessAvgTime.Describe(ch)
	e.LoginFailureNumOps.Describe(ch)
	e.LoginFailureAvgTime.Describe(ch)
	e.GetGroupsNumOps.Describe(ch)
	e.GetGroupsAvgTime.Describe(ch)
	e.numMasterWALs.Describe(ch)

}

// Collect implements the prometheus.Collector interface.
func (e *Exporter) Collect(ch chan<- prometheus.Metric) {
	resp, err := http.Get(e.url)
	if err != nil {
		log.Error(err)
	}
	defer resp.Body.Close()
	data, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Error(err)
	}
	var f interface{}
	err = json.Unmarshal(data, &f)
	if err != nil {
		log.Error(err)
	}

	m := f.(map[string]interface{})

	var nameList = m["beans"].([]interface{})
	for _, nameData := range nameList {
		hbasemaster := nameData.(map[string]interface{})
		if hbasemaster["name"] == "Hadoop:service=HBase,name=Master,sub=Balancer"{
			e.miscInvocationCount.Set(hbasemaster["miscInvocationCount"].(float64))
			e.BalancerCluster_num_ops.Set(hbasemaster["BalancerCluster_num_ops"].(float64))
			e.BalancerCluster_min.Set(hbasemaster["BalancerCluster_min"].(float64))
			e.BalancerCluster_max.Set(hbasemaster["BalancerCluster_max"].(float64))
			e.BalancerCluster_mean.Set(hbasemaster["BalancerCluster_mean"].(float64))
			e.BalancerCluster_25th_percentile.Set(hbasemaster["BalancerCluster_25th_percentile"].(float64))
			e.BalancerCluster_median.Set(hbasemaster["BalancerCluster_median"].(float64))
			e.BalancerCluster_75th_percentile.Set(hbasemaster["BalancerCluster_75th_percentile"].(float64))
			e.BalancerCluster_90th_percentile.Set(hbasemaster["BalancerCluster_90th_percentile"].(float64))
			e.BalancerCluster_95th_percentile.Set(hbasemaster["BalancerCluster_95th_percentile"].(float64))
			e.BalancerCluster_98th_percentile.Set(hbasemaster["BalancerCluster_98th_percentile"].(float64))
			e.BalancerCluster_99th_percentile.Set(hbasemaster["BalancerCluster_99th_percentile"].(float64))
			//e.BalancerCluster_99.9th_percentile.Set(hbasemaster["BalancerCluster_99.9th_percentile"].(float64))
		}
		if hbasemaster["name"] == "Hadoop:service=HBase,name=Master,sub=AssignmentManger"{
			e.ritOldestAge.Set(hbasemaster["ritOldestAge"].(float64))
			e.ritCountOverThreshold.Set(hbasemaster["ritCountOverThreshold"].(float64))
			e.BulkAssign_num_ops.Set(hbasemaster["BulkAssign_num_ops"].(float64))
			e.BulkAssign_min.Set(hbasemaster["BulkAssign_min"].(float64))
			e.BulkAssign_max.Set(hbasemaster["BulkAssign_max"].(float64))
			e.BulkAssign_mean.Set(hbasemaster["BulkAssign_mean"].(float64))
			e.BulkAssign_25th_percentile.Set(hbasemaster["BulkAssign_25th_percentile"].(float64))
			e.BulkAssign_median.Set(hbasemaster["BulkAssign_median"].(float64))
			e.BulkAssign_75th_percentile.Set(hbasemaster["BulkAssign_75th_percentile"].(float64))
			e.BulkAssign_90th_percentile.Set(hbasemaster["BulkAssign_90th_percentile"].(float64))
			e.BulkAssign_95th_percentile.Set(hbasemaster["BulkAssign_95th_percentile"].(float64))
			e.BulkAssign_98th_percentile.Set(hbasemaster["BulkAssign_98th_percentile"].(float64))
			e.BulkAssign_99th_percentile.Set(hbasemaster["BulkAssign_99th_percentile"].(float64))
			/*e.BulkAssign_99.9th_percentile.Set(hbasemaster["BulkAssign_99.9th_percentile"].(float64))
			e.BulkAssign_TimeRangeCount_0-1.Set(hbasemaster["BulkAssign_TimeRangeCount_0-1"].(float64))
			e.BulkAssign_TimeRangeCount_1000-3000.Set(hbasemaster["BulkAssign_TimeRangeCount_1000-3000"].(float64))
			*/
			e.ritCount.Set(hbasemaster["ritCount"].(float64))
			e.Assign_num_ops.Set(hbasemaster["Assign_num_ops"].(float64))
			e.Assign_min.Set(hbasemaster["Assign_min"].(float64))
			e.Assign_max.Set(hbasemaster["Assign_max"].(float64))
			e.Assign_mean.Set(hbasemaster["Assign_mean"].(float64))
			e.Assign_25th_percentile.Set(hbasemaster["Assign_25th_percentile"].(float64))
			e.Assign_median.Set(hbasemaster["Assign_median"].(float64))
			e.Assign_75th_percentile.Set(hbasemaster["Assign_75th_percentile"].(float64))
			e.Assign_90th_percentile.Set(hbasemaster["Assign_90th_percentile"].(float64))
			e.Assign_95th_percentile.Set(hbasemaster["Assign_95th_percentile"].(float64))
			e.Assign_98th_percentile.Set(hbasemaster["Assign_98th_percentile"].(float64))
			e.Assign_99th_percentile.Set(hbasemaster["Assign_99th_percentile"].(float64))
			//e.Assign_99.9th_percentile.Set(hbasemaster["Assign_99.9th_percentile"].(float64))
		}

		if hbasemaster["name"] == "java.lang:type=Runtime"{
			e.Uptime.Set(hbasemaster["Uptime"].(float64))
			e.StartTime.Set(hbasemaster["StartTime"].(float64))
		}
		if hbasemaster["name"] == "Hadoop:service=HBase,name=MetricsSystem,sub=Control"{
		}
		if hbasemaster["name"] == "java.lang:type=Threading"{
			e.PeakThreadCount.Set(hbasemaster["PeakThreadCount"].(float64))
			e.DaemonThreadCount.Set(hbasemaster["DaemonThreadCount"].(float64))
			e.ThreadCount.Set(hbasemaster["ThreadCount"].(float64))
			e.TotalStartedThreadCount.Set(hbasemaster["TotalStartedThreadCount"].(float64))
			e.CurrentThreadCpuTime.Set(hbasemaster["CurrentThreadCpuTime"].(float64))
			e.CurrentThreadUserTime.Set(hbasemaster["CurrentThreadUserTime"].(float64))
		}
		if hbasemaster["name"] == "java.lang:type=OperatingSystem"{
			e.OpenFileDescriptorCount.Set(hbasemaster["OpenFileDescriptorCount"].(float64))
			e.MaxFileDescriptorCount.Set(hbasemaster["MaxFileDescriptorCount"].(float64))
			e.CommittedVirtualMemorySize.Set(hbasemaster["CommittedVirtualMemorySize"].(float64))
			e.TotalSwapSpaceSize.Set(hbasemaster["TotalSwapSpaceSize"].(float64))
			e.FreeSwapSpaceSize.Set(hbasemaster["FreeSwapSpaceSize"].(float64))
			e.ProcessCpuTime.Set(hbasemaster["ProcessCpuTime"].(float64))
			e.FreePhysicalMemorySize.Set(hbasemaster["FreePhysicalMemorySize"].(float64))
			e.TotalPhysicalMemorySize.Set(hbasemaster["TotalPhysicalMemorySize"].(float64))
			e.SystemCpuLoad.Set(hbasemaster["SystemCpuLoad"].(float64))
			e.ProcessCpuLoad.Set(hbasemaster["ProcessCpuLoad"].(float64))
			e.AvailableProcessors.Set(hbasemaster["AvailableProcessors"].(float64))
			e.SystemLoadAverage.Set(hbasemaster["SystemLoadAverage"].(float64))
		}
		if hbasemaster["name"] == "Hadoop:service=HBase,name=MetricsSystem,sub=Stats"{
			e.NumActiveSources.Set(hbasemaster["NumActiveSources"].(float64))
			e.NumAllSources.Set(hbasemaster["NumAllSources"].(float64))
			e.NumActiveSinks.Set(hbasemaster["NumActiveSinks"].(float64))
			e.NumAllSinks.Set(hbasemaster["NumAllSinks"].(float64))
			e.SnapshotNumOps.Set(hbasemaster["SnapshotNumOps"].(float64))
			e.SnapshotAvgTime.Set(hbasemaster["SnapshotAvgTime"].(float64))
			e.PublishNumOps.Set(hbasemaster["PublishNumOps"].(float64))
			e.PublishAvgTime.Set(hbasemaster["PublishAvgTime"].(float64))
			e.DroppedPubAll.Set(hbasemaster["DroppedPubAll"].(float64))
		}
		/*
		if hbasemaster["name"] == "java.lang:type=MemoryPool,name=Code Cache"{
			e.UsageThreshold.Set(hbasemaster["UsageThreshold"].(float64))
			e.UsageThresholdCount.Set(hbasemaster["UsageThresholdCount"].(float64))
		}*/
		if hbasemaster["name"] == "java.lang:type=Compilation"{
			e.TotalCompilationTime.Set(hbasemaster["TotalCompilationTime"].(float64))
		}
		if hbasemaster["name"] == "java.lang:type=MemoryManager,name=CodeCacheManager"{
		}
		if hbasemaster["name"] == "java.util.logging:type=Logging"{
		}
		if hbasemaster["name"] == "java.lang:type=ClassLoading"{
			e.LoadedClassCount.Set(hbasemaster["LoadedClassCount"].(float64))
			e.UnloadedClassCount.Set(hbasemaster["UnloadedClassCount"].(float64))
			e.TotalLoadedClassCount.Set(hbasemaster["TotalLoadedClassCount"].(float64))
		}
		if hbasemaster["name"] == "java.lang:type=MemoryManager,name=Metaspace Manager"{
		}
		if hbasemaster["name"] == "Hadoop:service=HBase,name=Master,sub=FileSystem"{
			e.HlogSplitTime_num_ops.Set(hbasemaster["HlogSplitTime_num_ops"].(float64))
			e.HlogSplitTime_min.Set(hbasemaster["HlogSplitTime_min"].(float64))
			e.HlogSplitTime_max.Set(hbasemaster["HlogSplitTime_max"].(float64))
			e.HlogSplitTime_mean.Set(hbasemaster["HlogSplitTime_mean"].(float64))
			e.HlogSplitTime_25th_percentile.Set(hbasemaster["HlogSplitTime_25th_percentile"].(float64))
			e.HlogSplitTime_median.Set(hbasemaster["HlogSplitTime_median"].(float64))
			e.HlogSplitTime_75th_percentile.Set(hbasemaster["HlogSplitTime_75th_percentile"].(float64))
			e.HlogSplitTime_90th_percentile.Set(hbasemaster["HlogSplitTime_90th_percentile"].(float64))
			e.HlogSplitTime_95th_percentile.Set(hbasemaster["HlogSplitTime_95th_percentile"].(float64))
			e.HlogSplitTime_98th_percentile.Set(hbasemaster["HlogSplitTime_98th_percentile"].(float64))
			e.HlogSplitTime_99th_percentile.Set(hbasemaster["HlogSplitTime_99th_percentile"].(float64))
			//e.HlogSplitTime_99.9th_percentile.Set(hbasemaster["HlogSplitTime_99.9th_percentile"].(float64))
			//e.HlogSplitTime_TimeRangeCount_0-1.Set(hbasemaster["HlogSplitTime_TimeRangeCount_0-1"].(float64))
			e.MetaHlogSplitTime_num_ops.Set(hbasemaster["MetaHlogSplitTime_num_ops"].(float64))
			e.MetaHlogSplitTime_min.Set(hbasemaster["MetaHlogSplitTime_min"].(float64))
			e.MetaHlogSplitTime_max.Set(hbasemaster["MetaHlogSplitTime_max"].(float64))
			e.MetaHlogSplitTime_mean.Set(hbasemaster["MetaHlogSplitTime_mean"].(float64))
			e.MetaHlogSplitTime_25th_percentile.Set(hbasemaster["MetaHlogSplitTime_25th_percentile"].(float64))
			e.MetaHlogSplitTime_median.Set(hbasemaster["MetaHlogSplitTime_median"].(float64))
			e.MetaHlogSplitTime_75th_percentile.Set(hbasemaster["MetaHlogSplitTime_75th_percentile"].(float64))
			e.MetaHlogSplitTime_90th_percentile.Set(hbasemaster["MetaHlogSplitTime_90th_percentile"].(float64))
			e.MetaHlogSplitTime_95th_percentile.Set(hbasemaster["MetaHlogSplitTime_95th_percentile"].(float64))
			e.MetaHlogSplitTime_98th_percentile.Set(hbasemaster["MetaHlogSplitTime_98th_percentile"].(float64))
			e.MetaHlogSplitTime_99th_percentile.Set(hbasemaster["MetaHlogSplitTime_99th_percentile"].(float64))
			//e.MetaHlogSplitTime_99.9th_percentile.Set(hbasemaster["MetaHlogSplitTime_99.9th_percentile"].(float64))
			e.HlogSplitSize_num_ops.Set(hbasemaster["HlogSplitSize_num_ops"].(float64))
			e.HlogSplitSize_min.Set(hbasemaster["HlogSplitSize_min"].(float64))
			e.HlogSplitSize_max.Set(hbasemaster["HlogSplitSize_max"].(float64))
			e.HlogSplitSize_mean.Set(hbasemaster["HlogSplitSize_mean"].(float64))
			e.HlogSplitSize_25th_percentile.Set(hbasemaster["HlogSplitSize_25th_percentile"].(float64))
			e.HlogSplitSize_median.Set(hbasemaster["HlogSplitSize_median"].(float64))
			e.HlogSplitSize_75th_percentile.Set(hbasemaster["HlogSplitSize_75th_percentile"].(float64))
			e.HlogSplitSize_90th_percentile.Set(hbasemaster["HlogSplitSize_90th_percentile"].(float64))
			e.HlogSplitSize_95th_percentile.Set(hbasemaster["HlogSplitSize_95th_percentile"].(float64))
			e.HlogSplitSize_98th_percentile.Set(hbasemaster["HlogSplitSize_98th_percentile"].(float64))
			e.HlogSplitSize_99th_percentile.Set(hbasemaster["HlogSplitSize_99th_percentile"].(float64))
			//e.HlogSplitSize_99.9th_percentile.Set(hbasemaster["HlogSplitSize_99.9th_percentile"].(float64))
			//e.HlogSplitSize_SizeRangeCount_0-10.Set(hbasemaster["HlogSplitSize_SizeRangeCount_0-10"].(float64))
			e.MetaHlogSplitSize_num_ops.Set(hbasemaster["MetaHlogSplitSize_num_ops"].(float64))
			e.MetaHlogSplitSize_min.Set(hbasemaster["MetaHlogSplitSize_min"].(float64))
			e.MetaHlogSplitSize_max.Set(hbasemaster["MetaHlogSplitSize_max"].(float64))
			e.MetaHlogSplitSize_mean.Set(hbasemaster["MetaHlogSplitSize_mean"].(float64))
			e.MetaHlogSplitSize_25th_percentile.Set(hbasemaster["MetaHlogSplitSize_25th_percentile"].(float64))
			e.MetaHlogSplitSize_median.Set(hbasemaster["MetaHlogSplitSize_median"].(float64))
			e.MetaHlogSplitSize_75th_percentile.Set(hbasemaster["MetaHlogSplitSize_75th_percentile"].(float64))
			e.MetaHlogSplitSize_90th_percentile.Set(hbasemaster["MetaHlogSplitSize_90th_percentile"].(float64))
			e.MetaHlogSplitSize_95th_percentile.Set(hbasemaster["MetaHlogSplitSize_95th_percentile"].(float64))
			e.MetaHlogSplitSize_98th_percentile.Set(hbasemaster["MetaHlogSplitSize_98th_percentile"].(float64))
			e.MetaHlogSplitSize_99th_percentile.Set(hbasemaster["MetaHlogSplitSize_99th_percentile"].(float64))
			//e.MetaHlogSplitSize_99.9th_percentile.Set(hbasemaster["MetaHlogSplitSize_99.9th_percentile"].(float64))
		}
		/*
		if hbasemaster["name"] == "java.lang:type=MemoryPool,name=Metaspace"{
			e.UsageThreshold.Set(hbasemaster["UsageThreshold"].(float64))
			e.UsageThresholdCount.Set(hbasemaster["UsageThresholdCount"].(float64))
		}
		 */
		if hbasemaster["name"] == "Hadoop:service=HBase,name=Master,sub=Server"{
			e.mergePlanCount.Set(hbasemaster["mergePlanCount"].(float64))
			e.splitPlanCount.Set(hbasemaster["splitPlanCount"].(float64))
			e.masterActiveTime.Set(hbasemaster["masterActiveTime"].(float64))
			e.masterStartTime.Set(hbasemaster["masterStartTime"].(float64))
			e.averageLoad.Set(hbasemaster["averageLoad"].(float64))
			e.numRegionServers.Set(hbasemaster["numRegionServers"].(float64))
			e.numDeadRegionServers.Set(hbasemaster["numDeadRegionServers"].(float64))
			e.clusterRequests.Set(hbasemaster["clusterRequests"].(float64))

			if hbasemaster["tag.isActiveMaster"] == "true" {
				e.isActiveMaster.Set(1)
			}
			if hbasemaster["tag.isActiveMaster"] == "false" {
				e.isActiveMaster.Set(0)
			}
		}
		if hbasemaster["name"] == "java.lang:type=MemoryPool,name=Par Eden Space"{
			e.CollectionUsageThreshold.Set(hbasemaster["CollectionUsageThreshold"].(float64))
			e.CollectionUsageThresholdCount.Set(hbasemaster["CollectionUsageThresholdCount"].(float64))
		}
		/*
		if hbasemaster["name"] == "java.lang:type=GarbageCollector,name=ParNew"{
			e.CollectionCount.Set(hbasemaster["CollectionCount"].(float64))
			e.CollectionTime.Set(hbasemaster["CollectionTime"].(float64))
		}
		if hbasemaster["name"] == "java.lang:type=GarbageCollector,name=ConcurrentMarkSweep"{
			e.CollectionCount.Set(hbasemaster["CollectionCount"].(float64))
			e.CollectionTime.Set(hbasemaster["CollectionTime"].(float64))
		}
		 */
		if hbasemaster["name"] == "Hadoop:service=HBase,name=JvmMetrics"{
			e.MemNonHeapUsedM.Set(hbasemaster["MemNonHeapUsedM"].(float64))
			e.MemNonHeapCommittedM.Set(hbasemaster["MemNonHeapCommittedM"].(float64))
			e.MemNonHeapMaxM.Set(hbasemaster["MemNonHeapMaxM"].(float64))
			e.MemHeapUsedM.Set(hbasemaster["MemHeapUsedM"].(float64))
			e.MemHeapCommittedM.Set(hbasemaster["MemHeapCommittedM"].(float64))
			e.MemHeapMaxM.Set(hbasemaster["MemHeapMaxM"].(float64))
			e.MemMaxM.Set(hbasemaster["MemMaxM"].(float64))
			e.GcCountParNew.Set(hbasemaster["GcCountParNew"].(float64))
			e.GcTimeMillisParNew.Set(hbasemaster["GcTimeMillisParNew"].(float64))
			e.GcCountConcurrentMarkSweep.Set(hbasemaster["GcCountConcurrentMarkSweep"].(float64))
			e.GcTimeMillisConcurrentMarkSweep.Set(hbasemaster["GcTimeMillisConcurrentMarkSweep"].(float64))
			e.GcCount.Set(hbasemaster["GcCount"].(float64))
			e.GcTimeMillis.Set(hbasemaster["GcTimeMillis"].(float64))
			e.ThreadsNew.Set(hbasemaster["ThreadsNew"].(float64))
			e.ThreadsRunnable.Set(hbasemaster["ThreadsRunnable"].(float64))
			e.ThreadsBlocked.Set(hbasemaster["ThreadsBlocked"].(float64))
			e.ThreadsWaiting.Set(hbasemaster["ThreadsWaiting"].(float64))
			e.ThreadsTimedWaiting.Set(hbasemaster["ThreadsTimedWaiting"].(float64))
			e.ThreadsTerminated.Set(hbasemaster["ThreadsTerminated"].(float64))
			e.LogFatal.Set(hbasemaster["LogFatal"].(float64))
			e.LogError.Set(hbasemaster["LogError"].(float64))
			e.LogWarn.Set(hbasemaster["LogWarn"].(float64))
			e.LogInfo.Set(hbasemaster["LogInfo"].(float64))
		}
		/*
		if hbasemaster["name"] == "java.lang:type=MemoryPool,name=Compressed Class Space"{
			e.UsageThreshold.Set(hbasemaster["UsageThreshold"].(float64))
			e.UsageThresholdCount.Set(hbasemaster["UsageThresholdCount"].(float64))
		}
		 */
		if hbasemaster["name"] == "com.sun.management:type=DiagnosticCommand"{
		}
		if hbasemaster["name"] == "Hadoop:service=HBase,name=Master,sub=IPC"{
			e.queueSize.Set(hbasemaster["queueSize"].(float64))
			e.numCallsInGeneralQueue.Set(hbasemaster["numCallsInGeneralQueue"].(float64))
			e.numCallsInReplicationQueue.Set(hbasemaster["numCallsInReplicationQueue"].(float64))
			e.numCallsInPriorityQueue.Set(hbasemaster["numCallsInPriorityQueue"].(float64))
			e.numOpenConnections.Set(hbasemaster["numOpenConnections"].(float64))
			e.numActiveHandler.Set(hbasemaster["numActiveHandler"].(float64))
			e.numGeneralCallsDropped.Set(hbasemaster["numGeneralCallsDropped"].(float64))
			e.numLifoModeSwitches.Set(hbasemaster["numLifoModeSwitches"].(float64))
			e.receivedBytes.Set(hbasemaster["receivedBytes"].(float64))
			//e.exceptions.RegionMovedException.Set(hbasemaster["exceptions.RegionMovedException"].(float64))
			//e.exceptions.multiResponseTooLarge.Set(hbasemaster["exceptions.multiResponseTooLarge"].(float64))
			e.authenticationSuccesses.Set(hbasemaster["authenticationSuccesses"].(float64))
			e.authorizationFailures.Set(hbasemaster["authorizationFailures"].(float64))
			e.TotalCallTime_num_ops.Set(hbasemaster["TotalCallTime_num_ops"].(float64))
			e.TotalCallTime_min.Set(hbasemaster["TotalCallTime_min"].(float64))
			e.TotalCallTime_max.Set(hbasemaster["TotalCallTime_max"].(float64))
			e.TotalCallTime_mean.Set(hbasemaster["TotalCallTime_mean"].(float64))
			e.TotalCallTime_25th_percentile.Set(hbasemaster["TotalCallTime_25th_percentile"].(float64))
			e.TotalCallTime_median.Set(hbasemaster["TotalCallTime_median"].(float64))
			e.TotalCallTime_75th_percentile.Set(hbasemaster["TotalCallTime_75th_percentile"].(float64))
			e.TotalCallTime_90th_percentile.Set(hbasemaster["TotalCallTime_90th_percentile"].(float64))
			e.TotalCallTime_95th_percentile.Set(hbasemaster["TotalCallTime_95th_percentile"].(float64))
			e.TotalCallTime_98th_percentile.Set(hbasemaster["TotalCallTime_98th_percentile"].(float64))
			e.TotalCallTime_99th_percentile.Set(hbasemaster["TotalCallTime_99th_percentile"].(float64))
			//e.TotalCallTime_99.9th_percentile.Set(hbasemaster["TotalCallTime_99.9th_percentile"].(float64))
			//e.TotalCallTime_TimeRangeCount_0-1.Set(hbasemaster["TotalCallTime_TimeRangeCount_0-1"].(float64))
			//e.TotalCallTime_TimeRangeCount_1-3.Set(hbasemaster["TotalCallTime_TimeRangeCount_1-3"].(float64))
			//e.exceptions.RegionTooBusyException.Set(hbasemaster["exceptions.RegionTooBusyException"].(float64))
			//e.exceptions.FailedSanityCheckException.Set(hbasemaster["exceptions.FailedSanityCheckException"].(float64))
			e.ResponseSize_num_ops.Set(hbasemaster["ResponseSize_num_ops"].(float64))
			e.ResponseSize_min.Set(hbasemaster["ResponseSize_min"].(float64))
			e.ResponseSize_max.Set(hbasemaster["ResponseSize_max"].(float64))
			e.ResponseSize_mean.Set(hbasemaster["ResponseSize_mean"].(float64))
			e.ResponseSize_25th_percentile.Set(hbasemaster["ResponseSize_25th_percentile"].(float64))
			e.ResponseSize_median.Set(hbasemaster["ResponseSize_median"].(float64))
			e.ResponseSize_75th_percentile.Set(hbasemaster["ResponseSize_75th_percentile"].(float64))
			e.ResponseSize_90th_percentile.Set(hbasemaster["ResponseSize_90th_percentile"].(float64))
			e.ResponseSize_95th_percentile.Set(hbasemaster["ResponseSize_95th_percentile"].(float64))
			e.ResponseSize_98th_percentile.Set(hbasemaster["ResponseSize_98th_percentile"].(float64))
			e.ResponseSize_99th_percentile.Set(hbasemaster["ResponseSize_99th_percentile"].(float64))
			//e.ResponseSize_99.9th_percentile.Set(hbasemaster["ResponseSize_99.9th_percentile"].(float64))
			//e.ResponseSize_SizeRangeCount_0-10.Set(hbasemaster["ResponseSize_SizeRangeCount_0-10"].(float64))
			//e.exceptions.UnknownScannerException.Set(hbasemaster["exceptions.UnknownScannerException"].(float64))
			//e.exceptions.OutOfOrderScannerNextException.Set(hbasemaster["exceptions.OutOfOrderScannerNextException"].(float64))
			e.exceptions.Set(hbasemaster["exceptions"].(float64))
			e.ProcessCallTime_num_ops.Set(hbasemaster["ProcessCallTime_num_ops"].(float64))
			e.ProcessCallTime_min.Set(hbasemaster["ProcessCallTime_min"].(float64))
			e.ProcessCallTime_max.Set(hbasemaster["ProcessCallTime_max"].(float64))
			e.ProcessCallTime_mean.Set(hbasemaster["ProcessCallTime_mean"].(float64))
			e.ProcessCallTime_25th_percentile.Set(hbasemaster["ProcessCallTime_25th_percentile"].(float64))
			e.ProcessCallTime_median.Set(hbasemaster["ProcessCallTime_median"].(float64))
			e.ProcessCallTime_75th_percentile.Set(hbasemaster["ProcessCallTime_75th_percentile"].(float64))
			e.ProcessCallTime_90th_percentile.Set(hbasemaster["ProcessCallTime_90th_percentile"].(float64))
			e.ProcessCallTime_95th_percentile.Set(hbasemaster["ProcessCallTime_95th_percentile"].(float64))
			e.ProcessCallTime_98th_percentile.Set(hbasemaster["ProcessCallTime_98th_percentile"].(float64))
			e.ProcessCallTime_99th_percentile.Set(hbasemaster["ProcessCallTime_99th_percentile"].(float64))
			//e.ProcessCallTime_99.9th_percentile.Set(hbasemaster["ProcessCallTime_99.9th_percentile"].(float64))
			//e.ProcessCallTime_TimeRangeCount_0-1.Set(hbasemaster["ProcessCallTime_TimeRangeCount_0-1"].(float64))
			//e.ProcessCallTime_TimeRangeCount_1-3.Set(hbasemaster["ProcessCallTime_TimeRangeCount_1-3"].(float64))
			e.authenticationFallbacks.Set(hbasemaster["authenticationFallbacks"].(float64))
			//e.exceptions.NotServingRegionException.Set(hbasemaster["exceptions.NotServingRegionException"].(float64))
			//e.exceptions.callQueueTooBig.Set(hbasemaster["exceptions.callQueueTooBig"].(float64))
			e.authorizationSuccesses.Set(hbasemaster["authorizationSuccesses"].(float64))
			//e.exceptions.ScannerResetException.Set(hbasemaster["exceptions.ScannerResetException"].(float64))
			e.RequestSize_num_ops.Set(hbasemaster["RequestSize_num_ops"].(float64))
			e.RequestSize_min.Set(hbasemaster["RequestSize_min"].(float64))
			e.RequestSize_max.Set(hbasemaster["RequestSize_max"].(float64))
			e.RequestSize_mean.Set(hbasemaster["RequestSize_mean"].(float64))
			e.RequestSize_25th_percentile.Set(hbasemaster["RequestSize_25th_percentile"].(float64))
			e.RequestSize_median.Set(hbasemaster["RequestSize_median"].(float64))
			e.RequestSize_75th_percentile.Set(hbasemaster["RequestSize_75th_percentile"].(float64))
			e.RequestSize_90th_percentile.Set(hbasemaster["RequestSize_90th_percentile"].(float64))
			e.RequestSize_95th_percentile.Set(hbasemaster["RequestSize_95th_percentile"].(float64))
			e.RequestSize_98th_percentile.Set(hbasemaster["RequestSize_98th_percentile"].(float64))
			e.RequestSize_99th_percentile.Set(hbasemaster["RequestSize_99th_percentile"].(float64))
			//e.RequestSize_99.9th_percentile.Set(hbasemaster["RequestSize_99.9th_percentile"].(float64))
			//e.RequestSize_SizeRangeCount_100-1000.Set(hbasemaster["RequestSize_SizeRangeCount_100-1000"].(float64))
			e.sentBytes.Set(hbasemaster["sentBytes"].(float64))
			e.QueueCallTime_num_ops.Set(hbasemaster["QueueCallTime_num_ops"].(float64))
			e.QueueCallTime_min.Set(hbasemaster["QueueCallTime_min"].(float64))
			e.QueueCallTime_max.Set(hbasemaster["QueueCallTime_max"].(float64))
			e.QueueCallTime_mean.Set(hbasemaster["QueueCallTime_mean"].(float64))
			e.QueueCallTime_25th_percentile.Set(hbasemaster["QueueCallTime_25th_percentile"].(float64))
			e.QueueCallTime_median.Set(hbasemaster["QueueCallTime_median"].(float64))
			e.QueueCallTime_75th_percentile.Set(hbasemaster["QueueCallTime_75th_percentile"].(float64))
			e.QueueCallTime_90th_percentile.Set(hbasemaster["QueueCallTime_90th_percentile"].(float64))
			e.QueueCallTime_95th_percentile.Set(hbasemaster["QueueCallTime_95th_percentile"].(float64))
			e.QueueCallTime_98th_percentile.Set(hbasemaster["QueueCallTime_98th_percentile"].(float64))
			e.QueueCallTime_99th_percentile.Set(hbasemaster["QueueCallTime_99th_percentile"].(float64))
			//e.QueueCallTime_99.9th_percentile.Set(hbasemaster["QueueCallTime_99.9th_percentile"].(float64))
			//e.QueueCallTime_TimeRangeCount_0-1.Set(hbasemaster["QueueCallTime_TimeRangeCount_0-1"].(float64))
			//e.QueueCallTime_TimeRangeCount_1-3.Set(hbasemaster["QueueCallTime_TimeRangeCount_1-3"].(float64))
			e.authenticationFailures.Set(hbasemaster["authenticationFailures"].(float64))
		}
		if hbasemaster["name"] == "Hadoop:service=HBase,name=UgiMetrics"{
			e.LoginSuccessNumOps.Set(hbasemaster["LoginSuccessNumOps"].(float64))
			e.LoginSuccessAvgTime.Set(hbasemaster["LoginSuccessAvgTime"].(float64))
			e.LoginFailureNumOps.Set(hbasemaster["LoginFailureNumOps"].(float64))
			e.LoginFailureAvgTime.Set(hbasemaster["LoginFailureAvgTime"].(float64))
			e.GetGroupsNumOps.Set(hbasemaster["GetGroupsNumOps"].(float64))
			e.GetGroupsAvgTime.Set(hbasemaster["GetGroupsAvgTime"].(float64))
		}
		if hbasemaster["name"] == "Hadoop:service=HBase,name=Master,sub=Procedure"{
			e.numMasterWALs.Set(hbasemaster["numMasterWALs"].(float64))
		}




	}

	e.miscInvocationCount.Collect(ch)
	e.BalancerCluster_num_ops.Collect(ch)
	e.BalancerCluster_min.Collect(ch)
	e.BalancerCluster_max.Collect(ch)
	e.BalancerCluster_mean.Collect(ch)
	e.BalancerCluster_25th_percentile.Collect(ch)
	e.BalancerCluster_median.Collect(ch)
	e.BalancerCluster_75th_percentile.Collect(ch)
	e.BalancerCluster_90th_percentile.Collect(ch)
	e.BalancerCluster_95th_percentile.Collect(ch)
	e.BalancerCluster_98th_percentile.Collect(ch)
	e.BalancerCluster_99th_percentile.Collect(ch)
	//e.BalancerCluster_99.9th_percentile.Collect(ch)
	e.ritOldestAge.Collect(ch)
	e.ritCountOverThreshold.Collect(ch)
	e.BulkAssign_num_ops.Collect(ch)
	e.BulkAssign_min.Collect(ch)
	e.BulkAssign_max.Collect(ch)
	e.BulkAssign_mean.Collect(ch)
	e.BulkAssign_25th_percentile.Collect(ch)
	e.BulkAssign_median.Collect(ch)
	e.BulkAssign_75th_percentile.Collect(ch)
	e.BulkAssign_90th_percentile.Collect(ch)
	e.BulkAssign_95th_percentile.Collect(ch)
	e.BulkAssign_98th_percentile.Collect(ch)
	e.BulkAssign_99th_percentile.Collect(ch)
	//e.BulkAssign_99.9th_percentile.Collect(ch)
	//e.BulkAssign_TimeRangeCount_0-1.Collect(ch)
	//e.BulkAssign_TimeRangeCount_1000-3000.Collect(ch)
	e.ritCount.Collect(ch)
	e.Assign_num_ops.Collect(ch)
	e.Assign_min.Collect(ch)
	e.Assign_max.Collect(ch)
	e.Assign_mean.Collect(ch)
	e.Assign_25th_percentile.Collect(ch)
	e.Assign_median.Collect(ch)
	e.Assign_75th_percentile.Collect(ch)
	e.Assign_90th_percentile.Collect(ch)
	e.Assign_95th_percentile.Collect(ch)
	e.Assign_98th_percentile.Collect(ch)
	e.Assign_99th_percentile.Collect(ch)
	//e.Assign_99.9th_percentile.Collect(ch)
	e.Uptime.Collect(ch)
	e.StartTime.Collect(ch)
	e.PeakThreadCount.Collect(ch)
	e.DaemonThreadCount.Collect(ch)
	e.ThreadCount.Collect(ch)
	e.TotalStartedThreadCount.Collect(ch)
	e.CurrentThreadCpuTime.Collect(ch)
	e.CurrentThreadUserTime.Collect(ch)
	e.OpenFileDescriptorCount.Collect(ch)
	e.MaxFileDescriptorCount.Collect(ch)
	e.CommittedVirtualMemorySize.Collect(ch)
	e.TotalSwapSpaceSize.Collect(ch)
	e.FreeSwapSpaceSize.Collect(ch)
	e.ProcessCpuTime.Collect(ch)
	e.FreePhysicalMemorySize.Collect(ch)
	e.TotalPhysicalMemorySize.Collect(ch)
	e.SystemCpuLoad.Collect(ch)
	e.ProcessCpuLoad.Collect(ch)
	e.AvailableProcessors.Collect(ch)
	e.SystemLoadAverage.Collect(ch)
	e.NumActiveSources.Collect(ch)
	e.NumAllSources.Collect(ch)
	e.NumActiveSinks.Collect(ch)
	e.NumAllSinks.Collect(ch)
	e.SnapshotNumOps.Collect(ch)
	e.SnapshotAvgTime.Collect(ch)
	e.PublishNumOps.Collect(ch)
	e.PublishAvgTime.Collect(ch)
	e.DroppedPubAll.Collect(ch)
	e.TotalCompilationTime.Collect(ch)
	e.LoadedClassCount.Collect(ch)
	e.UnloadedClassCount.Collect(ch)
	e.TotalLoadedClassCount.Collect(ch)
	e.HlogSplitTime_num_ops.Collect(ch)
	e.HlogSplitTime_min.Collect(ch)
	e.HlogSplitTime_max.Collect(ch)
	e.HlogSplitTime_mean.Collect(ch)
	e.HlogSplitTime_25th_percentile.Collect(ch)
	e.HlogSplitTime_median.Collect(ch)
	e.HlogSplitTime_75th_percentile.Collect(ch)
	e.HlogSplitTime_90th_percentile.Collect(ch)
	e.HlogSplitTime_95th_percentile.Collect(ch)
	e.HlogSplitTime_98th_percentile.Collect(ch)
	e.HlogSplitTime_99th_percentile.Collect(ch)
	//e.HlogSplitTime_99.9th_percentile.Collect(ch)
	//e.HlogSplitTime_TimeRangeCount_0-1.Collect(ch)
	e.MetaHlogSplitTime_num_ops.Collect(ch)
	e.MetaHlogSplitTime_min.Collect(ch)
	e.MetaHlogSplitTime_max.Collect(ch)
	e.MetaHlogSplitTime_mean.Collect(ch)
	e.MetaHlogSplitTime_25th_percentile.Collect(ch)
	e.MetaHlogSplitTime_median.Collect(ch)
	e.MetaHlogSplitTime_75th_percentile.Collect(ch)
	e.MetaHlogSplitTime_90th_percentile.Collect(ch)
	e.MetaHlogSplitTime_95th_percentile.Collect(ch)
	e.MetaHlogSplitTime_98th_percentile.Collect(ch)
	e.MetaHlogSplitTime_99th_percentile.Collect(ch)
	//e.MetaHlogSplitTime_99.9th_percentile.Collect(ch)
	e.HlogSplitSize_num_ops.Collect(ch)
	e.HlogSplitSize_min.Collect(ch)
	e.HlogSplitSize_max.Collect(ch)
	e.HlogSplitSize_mean.Collect(ch)
	e.HlogSplitSize_25th_percentile.Collect(ch)
	e.HlogSplitSize_median.Collect(ch)
	e.HlogSplitSize_75th_percentile.Collect(ch)
	e.HlogSplitSize_90th_percentile.Collect(ch)
	e.HlogSplitSize_95th_percentile.Collect(ch)
	e.HlogSplitSize_98th_percentile.Collect(ch)
	e.HlogSplitSize_99th_percentile.Collect(ch)
	//e.HlogSplitSize_99.9th_percentile.Collect(ch)
	//e.HlogSplitSize_SizeRangeCount_0-10.Collect(ch)
	e.MetaHlogSplitSize_num_ops.Collect(ch)
	e.MetaHlogSplitSize_min.Collect(ch)
	e.MetaHlogSplitSize_max.Collect(ch)
	e.MetaHlogSplitSize_mean.Collect(ch)
	e.MetaHlogSplitSize_25th_percentile.Collect(ch)
	e.MetaHlogSplitSize_median.Collect(ch)
	e.MetaHlogSplitSize_75th_percentile.Collect(ch)
	e.MetaHlogSplitSize_90th_percentile.Collect(ch)
	e.MetaHlogSplitSize_95th_percentile.Collect(ch)
	e.MetaHlogSplitSize_98th_percentile.Collect(ch)
	e.MetaHlogSplitSize_99th_percentile.Collect(ch)
	/*e.MetaHlogSplitSize_99.9th_percentile.Collect(ch)
	e.UsageThreshold.Collect(ch)
	e.UsageThresholdCount.Collect(ch)
	 */
	e.mergePlanCount.Collect(ch)
	e.splitPlanCount.Collect(ch)
	e.masterActiveTime.Collect(ch)
	e.masterStartTime.Collect(ch)
	e.averageLoad.Collect(ch)
	e.numRegionServers.Collect(ch)
	e.numDeadRegionServers.Collect(ch)
	e.clusterRequests.Collect(ch)
	e.isActiveMaster.Collect(ch)
	e.CollectionUsageThreshold.Collect(ch)
	e.CollectionUsageThresholdCount.Collect(ch)
	e.MemNonHeapUsedM.Collect(ch)
	e.MemNonHeapCommittedM.Collect(ch)
	e.MemNonHeapMaxM.Collect(ch)
	e.MemHeapUsedM.Collect(ch)
	e.MemHeapCommittedM.Collect(ch)
	e.MemHeapMaxM.Collect(ch)
	e.MemMaxM.Collect(ch)
	e.GcCountParNew.Collect(ch)
	e.GcTimeMillisParNew.Collect(ch)
	e.GcCountConcurrentMarkSweep.Collect(ch)
	e.GcTimeMillisConcurrentMarkSweep.Collect(ch)
	e.GcCount.Collect(ch)
	e.GcTimeMillis.Collect(ch)
	e.ThreadsNew.Collect(ch)
	e.ThreadsRunnable.Collect(ch)
	e.ThreadsBlocked.Collect(ch)
	e.ThreadsWaiting.Collect(ch)
	e.ThreadsTimedWaiting.Collect(ch)
	e.ThreadsTerminated.Collect(ch)
	e.LogFatal.Collect(ch)
	e.LogError.Collect(ch)
	e.LogWarn.Collect(ch)
	e.LogInfo.Collect(ch)
	e.queueSize.Collect(ch)
	e.numCallsInGeneralQueue.Collect(ch)
	e.numCallsInReplicationQueue.Collect(ch)
	e.numCallsInPriorityQueue.Collect(ch)
	e.numOpenConnections.Collect(ch)
	e.numActiveHandler.Collect(ch)
	e.numGeneralCallsDropped.Collect(ch)
	e.numLifoModeSwitches.Collect(ch)
	e.receivedBytes.Collect(ch)
	//e.exceptions.RegionMovedException.Collect(ch)
	//e.exceptions.multiResponseTooLarge.Collect(ch)
	e.authenticationSuccesses.Collect(ch)
	e.authorizationFailures.Collect(ch)
	e.TotalCallTime_num_ops.Collect(ch)
	e.TotalCallTime_min.Collect(ch)
	e.TotalCallTime_max.Collect(ch)
	e.TotalCallTime_mean.Collect(ch)
	e.TotalCallTime_25th_percentile.Collect(ch)
	e.TotalCallTime_median.Collect(ch)
	e.TotalCallTime_75th_percentile.Collect(ch)
	e.TotalCallTime_90th_percentile.Collect(ch)
	e.TotalCallTime_95th_percentile.Collect(ch)
	e.TotalCallTime_98th_percentile.Collect(ch)
	e.TotalCallTime_99th_percentile.Collect(ch)
	//e.TotalCallTime_99.9th_percentile.Collect(ch)
	//e.TotalCallTime_TimeRangeCount_0-1.Collect(ch)
	//e.TotalCallTime_TimeRangeCount_1-3.Collect(ch)
	//e.exceptions.RegionTooBusyException.Collect(ch)
	//e.exceptions.FailedSanityCheckException.Collect(ch)
	e.ResponseSize_num_ops.Collect(ch)
	e.ResponseSize_min.Collect(ch)
	e.ResponseSize_max.Collect(ch)
	e.ResponseSize_mean.Collect(ch)
	e.ResponseSize_25th_percentile.Collect(ch)
	e.ResponseSize_median.Collect(ch)
	e.ResponseSize_75th_percentile.Collect(ch)
	e.ResponseSize_90th_percentile.Collect(ch)
	e.ResponseSize_95th_percentile.Collect(ch)
	e.ResponseSize_98th_percentile.Collect(ch)
	e.ResponseSize_99th_percentile.Collect(ch)
	//e.ResponseSize_99.9th_percentile.Collect(ch)
	//e.ResponseSize_SizeRangeCount_0-10.Collect(ch)
	//e.exceptions.UnknownScannerException.Collect(ch)
	//e.exceptions.OutOfOrderScannerNextException.Collect(ch)
	e.exceptions.Collect(ch)
	e.ProcessCallTime_num_ops.Collect(ch)
	e.ProcessCallTime_min.Collect(ch)
	e.ProcessCallTime_max.Collect(ch)
	e.ProcessCallTime_mean.Collect(ch)
	e.ProcessCallTime_25th_percentile.Collect(ch)
	e.ProcessCallTime_median.Collect(ch)
	e.ProcessCallTime_75th_percentile.Collect(ch)
	e.ProcessCallTime_90th_percentile.Collect(ch)
	e.ProcessCallTime_95th_percentile.Collect(ch)
	e.ProcessCallTime_98th_percentile.Collect(ch)
	e.ProcessCallTime_99th_percentile.Collect(ch)
	//e.ProcessCallTime_99.9th_percentile.Collect(ch)
	//e.ProcessCallTime_TimeRangeCount_0-1.Collect(ch)
	//e.ProcessCallTime_TimeRangeCount_1-3.Collect(ch)
	e.authenticationFallbacks.Collect(ch)
	//e.exceptions.NotServingRegionException.Collect(ch)
	//e.exceptions.callQueueTooBig.Collect(ch)
	e.authorizationSuccesses.Collect(ch)
	//e.exceptions.ScannerResetException.Collect(ch)
	e.RequestSize_num_ops.Collect(ch)
	e.RequestSize_min.Collect(ch)
	e.RequestSize_max.Collect(ch)
	e.RequestSize_mean.Collect(ch)
	e.RequestSize_25th_percentile.Collect(ch)
	e.RequestSize_median.Collect(ch)
	e.RequestSize_75th_percentile.Collect(ch)
	e.RequestSize_90th_percentile.Collect(ch)
	e.RequestSize_95th_percentile.Collect(ch)
	e.RequestSize_98th_percentile.Collect(ch)
	e.RequestSize_99th_percentile.Collect(ch)
	//e.RequestSize_99.9th_percentile.Collect(ch)
	//e.RequestSize_SizeRangeCount_100-1000.Collect(ch)
	e.sentBytes.Collect(ch)
	e.QueueCallTime_num_ops.Collect(ch)
	e.QueueCallTime_min.Collect(ch)
	e.QueueCallTime_max.Collect(ch)
	e.QueueCallTime_mean.Collect(ch)
	e.QueueCallTime_25th_percentile.Collect(ch)
	e.QueueCallTime_median.Collect(ch)
	e.QueueCallTime_75th_percentile.Collect(ch)
	e.QueueCallTime_90th_percentile.Collect(ch)
	e.QueueCallTime_95th_percentile.Collect(ch)
	e.QueueCallTime_98th_percentile.Collect(ch)
	e.QueueCallTime_99th_percentile.Collect(ch)
	//e.QueueCallTime_99.9th_percentile.Collect(ch)
	//e.QueueCallTime_TimeRangeCount_0-1.Collect(ch)
	//e.QueueCallTime_TimeRangeCount_1-3.Collect(ch)
	e.authenticationFailures.Collect(ch)
	e.LoginSuccessNumOps.Collect(ch)
	e.LoginSuccessAvgTime.Collect(ch)
	e.LoginFailureNumOps.Collect(ch)
	e.LoginFailureAvgTime.Collect(ch)
	e.GetGroupsNumOps.Collect(ch)
	e.GetGroupsAvgTime.Collect(ch)
	e.numMasterWALs.Collect(ch)


}

func main() {
	flag.Parse()

	exporter := NewExporter(*hbaseMasterJmxUrl)
	prometheus.MustRegister(exporter)

	log.Printf("Starting Server: %s", *listenAddress)
	http.Handle(*metricsPath, prometheus.Handler())
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte(`<html>
		<head><title>HbaseMaster Exporter</title></head>
		<body>
		<h1>HbaseMaster Exporter</h1>
		<p><a href="` + *metricsPath + `">Metrics</a></p>
		</body>
		</html>`))
	})
	err := http.ListenAndServe(*listenAddress, nil)
	log.Printf("hbase jmxurl: %s",*metricsPath)
	if err != nil {
		log.Fatal(err)
	}

}
